package com.lincolnXmypcqq.api;

import com.lincolnXmypcqq.robot.RobotDeal;
import com.lincolnXmypcqq.robot.framework.RobotDealContext;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ziyao.peng01@ucarinc.com
 * @description 功能实现的controller
 * @date 2018/11/29 9:40
 **/
@RestController
public class FrameWorkController {
    /**
     * .版本 2
     * <p>
     * .参数 参_机器人QQ,robotQQ, 文本型, , 多QQ登录情况下用于识别是哪个Q
     * .参数 参_消息类型,msgType, 整数型, , 信息唯一标识-1 未定义事件 1 好友信息 2,群信息 3,讨论组信息 4,临时会话 1001,被添加好友 1002,好友在线状态改变 1003 被删除好友 1004 签名变更 2001 某人申请加入群 2002 某人被邀请加入群 2003 我被邀请加入群 2005 某人被批准加入了群 2006 某人退出群  2007 某人被管理移除群 2008 某群被解散 2009 某人成为管理员 2010 某人被取消管理员 2011 群名片变动 2012 群名变动//暂未解析 2013 群公告变动
     * .参数 参_消息子类型,subMsgType, 整数型, , 对象申请、被邀请入群事件下该值为1时即对象为不良成员
     * .参数 参_消息来源,from, 文本型, , 信息的源头  群号,好友QQ,讨论组ID,临时会话对象QQ等
     * .参数 参_触发对象_主动,fromQQ, 文本型, , 主动触发这条信息的对象 T人时为T人的管理员QQ
     * .参数 参_触发对象_被动,toQQ, 文本型, , 被动接受这条信息的对象 T人时为被T对象的QQ
     * .参数 参_消息内容,content, 文本型, , 视情况而定的信息内容  申请入群时为入群理由,添加好友为附加信息,T人之类的为空
     * .参数 参_原始信息,frame, 文本型, , 经过解密后的封包字节数据或json结构信息
     * .参数 参_信息回传文本指针_Out,point, 整数型, , 信息回传指针。 视情况而定的返回附加文本信息  拒绝好友申请时则为拒绝理由 方式:’写到内存("测试",参_信息回传文本指针_Out)
     */
    /**
     * .版本 2
     * <p>
     * ' 以下是可以随处使用的动态变量:
     * ' 对象昵称:  [name]=[昵称]=[nick]
     * ' 群名:[gname]=[群名]
     * ' 自己的昵称:[myname]
     * ' 对象QQ:   [QQ]
     * ' 换行: 直接换行 或 \n 或 \r 或 \x0D
     * ' unicode字符转义发送:\ u+UTF8编码HEX
     * ' 时间段(早上、中午、傍晚、晚上、凌晨等):  [时间段]
     * ' 随机数0~100:  [r]    可叠加使用 [r][r]=0~10000
     * ' 自定义随机数:  r[范围1,范围2]  如 r[0,100]=随机0~100
     * ' 分句标识:   [next]     如:早上好[next]吃过早饭了吗？ 将会分成两条信息分别发送 每条信息最多允许使用10个分句标识
     * ' QQ默认小黄豆表情发送:  face+表情号.gif   或 [bq+表情号]   表情号为0~170共计171个表情（2014年8月28日为止  将来腾讯方面还会继续添加）
     * ' 颜表情:[em+颜表情号] 详细见：mypcqq emoji代码.jpg 和 mypcqq表情代码.png
     * ' 群内@人：  [@+对象QQ号] 如:[@445491251]
     * ' 群内@全体:   [@all] 要求为管理员
     * ' 图片回复:  直接使用如同{CC10C739-C125-06BD-496C-7DBCE02BB9BB}.jpg 这样的图片GUID发送
     * ' 图片上传：通直接发送 [网页连接] 或 [本地图片路径]上传 但  [本地图片路径]仅限于运行目录以及其子目录下  或过Api_UploadPic提交数据上传
     * ' 自定义单条信息字体:  在信息中加上 字体[颜色=颜色值,大小=50]即可  如:字体颜色测试  字体[颜色=255,大小=13]
     * ' 自定义气泡:[气泡+ID] 自定义本条信息气泡 可于任意位置插入如:测试[气泡234]  可以无差别使用任何气泡 已知ID 0~328不断增加中(截止2015年11月12日)
     * ' 更多的动态标记还在不断添加中.
     * <p>
     * ' MyPCQQ模版 修改于 2015年11月12日
     */
    @PostMapping("/dealMsg")
    public String delMsg(String robotQQ, Integer msgType, Integer subMsgType, String from, String fromQQ, String toQQ, String content, String frame, Integer point) {
        RobotDealContext.createRobotDeal(robotQQ, msgType, subMsgType, from, fromQQ, toQQ, content, frame, point);
        RobotDealContext.start();
        return "{code:1}";
    }

    /**
     * @param robotQQ, msgType, subMsgType, to, toQQ, content
     * @return com.lincoln.bean.ApiCode
     * @description 发送文字消息
     * @author ziyao.peng01@ucarinc.com
     * @date 2018/11/29 9:41
     */
    @PostMapping("/sendMsg")
    public String delMsg(String robotQQ, Integer msgType, Integer subMsgType, String to, String toQQ, String content) {
        RobotDeal.sendMsg(robotQQ, msgType, subMsgType, to, toQQ, content);
        return "{code:1}";
    }
}
